﻿using System;

namespace Jianshu_Research_Tools
{
    /// <summary>
    /// 类说明：检查输入，如有错误抛出FormatException。
    /// </summary>

    public static class AssertFuncs
    {
        public static void AssertString(object obj)
        {
            if (obj.GetType() != typeof(System.String))
            {
                throw new FormatException("传入的数据不是字符串");
            }
        }

        public static void AssertInt(object obj)
        {
            if (obj.GetType() != typeof(System.Int32))
            {
                throw new FormatException("传入的数据不是整数");
            }
        }


        public static void AssertFloat(object obj)
        {
            if (obj.GetType() != typeof(System.Double))
            {
                throw new FormatException("传入的数据不是浮点数");
            }
        }

        /// <summary>
        /// 判断是否是有效的简书 Url
        /// </summary>
        /// <param name="str">需要进行判断的字符串</param>
        public static void AssertJianshuUrl(string str)
        {
            string[] keyword_to_find = {"https://", "www.jianshu.com"};
            foreach (string keyword in keyword_to_find)
            {
                if (!str.Contains(keyword))
                {
                    throw new FormatException($"参数{str}不是有效的简书 Url。请注意：传入地址必须是https，我们会为此创建SSL/Tls安全通道。");
                }
            }

        }

        /// <summary>
        /// 判断是否是有效的用户 Url
        /// </summary>
        /// <param name="str">需要进行判断的字符串</param>
        public static void AssertUserUrl(string str)
        {
            string[] keyword_to_find = { "https://", "www.jianshu.com" , "/u/"};
            foreach (string keyword in keyword_to_find)
            {
                if (!str.Contains(keyword))
                {
                    throw new FormatException($"参数{str}不是有效的用户 Url。请注意：传入地址必须是https，我们会为此创建SSL/Tls安全通道。");
                }
            }
        }

        /// <summary>
        /// 判断是否是有效的文章 Url
        /// </summary>
        /// <param name="str">需要进行判断的字符串</param>
        public static void AssertArticleUrl(string str)
        {
            string[] keyword_to_find = { "https://", "www.jianshu.com", "/p/" };
            foreach (string keyword in keyword_to_find)
            {
                if (!str.Contains(keyword))
                {
                    throw new FormatException($"参数{str}不是有效的文章 Url。请注意：传入地址必须是https，我们会为此创建SSL/TlS安全通道。");
                }
            }
        }

        /// <summary>
        /// 判断是否是有效的文集 Url
        /// </summary>
        /// <param name="str">需要进行判断的字符串</param>
        public static void AssertNotebookUrl(string str)
        {
            string[] keyword_to_find = { "https://", "www.jianshu.com", "/nb/" };
            foreach (string keyword in keyword_to_find)
            {
                if (!str.Contains(keyword))
                {
                    throw new FormatException($"参数{str}不是有效的文集 Url。请注意：传入地址必须是https，我们会为此创建SSL/Tls安全通道。");
                }
            }
        }

        /// <summary>
        /// 判断是否是有效的专题 Url
        /// </summary>
        /// <param name="str">需要进行判断的字符串</param>
        public static void AssertCollectionUrl(string str)
        {
            string[] keyword_to_find = { "https://", "www.jianshu.com", "/c/" };
            foreach (string keyword in keyword_to_find)
            {
                if (!str.Contains(keyword))
                {
                    throw new FormatException($"参数{str}不是有效的专题 Url。请注意：传入地址必须是https，我们会为此创建SSL/Tls安全通道。");
                }
            }
        }

        /// <summary>
        /// 判断是否是有效的小岛 Url
        /// </summary>
        /// <param name="str">需要进行判断的字符串</param>
        public static void AssertIslandUrl(string str)
        {
            string[] keyword_to_find = { "https://", "www.jianshu.com", "/g/" };
            foreach (string keyword in keyword_to_find)
            {
                if (!str.Contains(keyword))
                {
                    throw new FormatException($"参数{str}不是有效的小岛 Url。请注意：传入地址必须是https，我们会为此创建SSL/Tls安全通道。");
                }
            }
        }

        /// <summary>
        /// 判断是否是有效的小岛帖子 Url
        /// </summary>
        /// <param name="str">需要进行判断的字符串</param>
        public static void AssertIslandPostUrl(string str)
        {
            string[] keyword_to_find = { "https://", "www.jianshu.com", "/gp/" };
            foreach (string keyword in keyword_to_find)
            {
                if (!str.Contains(keyword))
                {
                    throw new FormatException($"参数{str}不是有效的小岛帖子 Url。请注意：传入地址必须是https，我们会为此创建SSL/Tls安全通道。");
                }
            }
        }
    }
}
